home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d3 / rettig.arc / TRSOURCE.EXE / TRLIB.H < prev    next >
Text File  |  1990-10-22  |  13KB  |  387 lines

  1. /**********
  2. *
  3. *   trlib.h
  4. *
  5. *   Header file for all TRLIB.C modules.
  6. *
  7. *   By: Tom Rettig, Leonard Zerman, Ralph Davis
  8. *   Placed in the public domain by Tom Rettig Associates, 10/22/1990.
  9. *
  10. **********/
  11.  
  12. #define TRLIBVERS    "TRLIB, Clipper Edition, Version 1.20"
  13. #define TRTYPE       void pascal
  14. #define ABRENDCHAR   '.'                      /* used in street() */
  15. #define ABS(p)       (((p)<0)?-(p):(p))
  16. #define ADTOI(p)     (int) ((p)-('0'))        /* ascii digit to int */
  17. #define ADTOL(p)     (long) ((p)-('0'))       /* ascii digit to long*/
  18. #define BLANKDS      "00000000"
  19. #define COLOR_VID_AD 0xB800
  20. #define DEFAULT      0
  21. #define DIGIT(p)     (char) ((p)+('0'))       /* int digit to ascii */
  22. #define DONE         "DONE"    /* for filewrite() return successful */
  23. #define ERROR        0
  24. #define ERRORNEG     -1
  25. #define ERRORNEGL    -1L
  26. #define FALSE        (0)
  27. #define HYPHEN       "-"       /* string, not char, for password array */
  28. #define MAXEXPAND    16        /* maximum number of spaces to replace tabs */
  29. #define MAXELEM      1000
  30. #define MONO_VID_AD  0xB000
  31. #define NULLC        '\0'      /* use to terminate char arrays as strings */
  32. #define NULLLONG     0L        /* for NULL pointer return */
  33. #define NULLS        ""        /* use with _retc() to return null string */
  34. #define PW_MIN_LEN   3         /* number of chars in password */
  35. #define PW_MIN_NUM   10000000  /* number of digits in password return number */
  36. #define SPACEC       ' '
  37. #define TRUE         (1)
  38. #define TWO_BILLION  2000000000               /* for base.c */
  39. #define UPPER        ('a' - 'A')
  40. #define ZEROC        '0'
  41.  
  42. /* Replace #define macros in Microsoft and Clipper */
  43.  
  44. #define isalpha(p)   ((('A'<=(p)&&(p)<= 'Z')||('a'<= (p)&&(p)<='z'))\
  45.                                                      ? TRUE : FALSE) 
  46. #define isdigit(p)   (('0'<=(p)&&(p)<='9') ? TRUE : FALSE)
  47.  
  48. #define isspace(p)   ((((p) == ' ')||((p) == '\n')||((p) == '\t')||\
  49.                        ((p) == '\f')||((p) == '\r')) ? TRUE : FALSE)
  50.  
  51. #define islower(p)   ( 'a' <= (p) && (p) <= 'z' )
  52.  
  53. #define toupper(p)   ( islower(p) ? ((p) - UPPER) : ((p)) )
  54.  
  55. /* valid structure of 8 byte time string is "##:##:##" */
  56. #define TIMELEN      8 /* number of bytes in time string not including null */
  57. #define TIMEDELIM    ':'   /* character used by DELIM_1 and DELIM_2 */
  58. #define TDELIMS(p)   ( (p)[TDELIM_1]==TIMEDELIM && (p)[TDELIM_2]==TIMEDELIM )
  59. #define HOURS        0
  60. #define HOUR         1
  61. #define TDELIM_1     2
  62. #define MINS         3
  63. #define MIN          4
  64. #define TDELIM_2     5
  65. #define SECS         6
  66. #define SEC          7
  67.  
  68. #define ISHOURS(p)   (( (p)[HOURS] == '2' && \
  69.                         (p)[HOUR ] >= '0' && (p)[HOUR ] <= '3'  ) || \
  70.                      ( ((p)[HOURS] == '0' || (p)[HOURS] == '1') && \
  71.                         (p)[HOUR ] >= '0' && (p)[HOUR ] <= '9'  ))
  72.  
  73. #define ISMINS(p)    ((p)[MINS]>='0' && (p)[MINS]<='5' &&\
  74.                       (p)[MIN ]>='0' && (p)[MIN ]<='9')
  75.  
  76. #define ISSECS(p)    ((p)[SECS]>='0' && (p)[SECS]<='5' &&\
  77.                       (p)[SEC ]>='0' && (p)[SEC ]<='9')
  78.  
  79. #define VALIDTIME(p) (TDELIMS(p) && ISHOURS(p)  &&\
  80.                        ISMINS(p)  && ISSECS(p)  &&\
  81.                        (p)[TIMELEN]==NULLC)
  82.  
  83. #define ISTS(p)      (ISDIGIT(p[HOURS]) && ISDIGIT(p[HOUR]) &&\
  84.                       ISDIGIT(p[MINS ]) && ISDIGIT(p[MIN ]) &&\
  85.                       ISDIGIT(p[SECS ]) && ISDIGIT(p[SEC ]) &&\
  86.                       TDELIMS(p) && (p)[TIMELEN]==NULLC)
  87.  
  88. /* valid structure of 10 byte zip code is "#####-####" */
  89. #define ZIPLEN       10
  90. #define ZIPDELIM     '-'
  91. #define ZDELIM       5
  92.  
  93. #define VALIDZIP1(p) ((p)[0]>='0' && (p)[0]<='9' &&\
  94.                       (p)[1]>='0' && (p)[1]<='9' &&\
  95.                       (p)[2]>='0' && (p)[2]<='9' &&\
  96.                       (p)[3]>='0' && (p)[3]<='9' &&\
  97.                       (p)[4]>='0' && (p)[4]<='9')
  98.  
  99. #define VALIDZIP2(p) ((p)[ZDELIM]==ZIPDELIM      &&\
  100.                       (p)[6]>='0' && (p)[6]<='9' &&\
  101.                       (p)[7]>='0' && (p)[7]<='9' &&\
  102.                       (p)[8]>='0' && (p)[8]<='9' &&\
  103.                       (p)[9]>='0' && (p)[9]<='9' &&\
  104.                       (p)[ZIPLEN]==NULLC)
  105.  
  106. /* valid structure of 13 byte telephone number is "(###)###-####" */
  107. #define PHONLEN       13
  108. #define PHONDELIM_1   '('
  109. #define PHONDELIM_2   ')'
  110. #define PHONDELIM_3   '-'
  111. #define PDELIM_1      0
  112. #define PDELIM_2      4
  113. #define PDELIM_3      8
  114.  
  115. #define VALIDPHON1(p) ((p)[PDELIM_1]==PHONDELIM_1 &&\
  116.                        (p)[ 1]>='0' && (p)[ 1]<='9' &&\
  117.                        (p)[ 2]>='0' && (p)[ 2]<='9' &&\
  118.                        (p)[ 3]>='0' && (p)[ 3]<='9' &&\
  119.                        (p)[PDELIM_2]==PHONDELIM_2)
  120.  
  121. #define VALIDPHON2(p) ((p)[ 5]>='0' && (p)[ 5]<='9' &&\
  122.                        (p)[ 6]>='0' && (p)[ 6]<='9' &&\
  123.                        (p)[ 7]>='0' && (p)[ 7]<='9' &&\
  124.                        (p)[PDELIM_3]==PHONDELIM_3)
  125.  
  126. #define VALIDPHON3(p) ((p)[ 9]>='0' && (p)[ 9]<='9' &&\
  127.                        (p)[10]>='0' && (p)[10]<='9' &&\
  128.                        (p)[11]>='0' && (p)[11]<='9' &&\
  129.                        (p)[12]>='0' && (p)[12]<='9' &&\
  130.                        (p)[PHONLEN]==NULLC)
  131.  
  132. /* valid structure of 11 byte social security number is "###-##-####" */
  133. #define SSNUMLEN      11
  134. #define SSNUMDELIM    '-'
  135. #define SSDELIM_1     3
  136. #define SSDELIM_2     6
  137.  
  138. #define VALIDSS1(p)   ((p)[ 0]>='0' && (p)[ 0]<='9' &&\
  139.                        (p)[ 1]>='0' && (p)[ 1]<='9' &&\
  140.                        (p)[ 2]>='0' && (p)[ 2]<='9' &&\
  141.                        (p)[SSDELIM_1]==SSNUMDELIM   &&\
  142.                        (p)[ 4]>='0' && (p)[ 4]<='9' &&\
  143.                        (p)[ 5]>='0' && (p)[ 5]<='9')
  144.  
  145. #define VALIDSS2(p)   ((p)[SSDELIM_2]==SSNUMDELIM   &&\
  146.                        (p)[ 7]>='0' && (p)[ 9]<='9' &&\
  147.                        (p)[ 8]>='0' && (p)[ 7]<='9' &&\
  148.                        (p)[ 9]>='0' && (p)[10]<='9' &&\
  149.                        (p)[10]>='0' && (p)[11]<='9' &&\
  150.                        (p)[SSNUMLEN]==NULLC)
  151.  
  152. #define ISLPYR(yr)    ((yr)>0 && (((yr)%4==0&&(yr)%100!=0) || (yr)%400==0))
  153.  
  154. #define ISMONTH(p)    ((p)>=1 && (p)<=12)       /* valid month */
  155.  
  156. #define ISYEAR(p)     ((p)>=1 && (p)<=9999)     /* valid year */
  157.  
  158. #define ISDS(p)       ( ISDIGIT(p[0]) && ISDIGIT(p[1]) &&\
  159.                         ISDIGIT(p[2]) && ISDIGIT(p[3]) &&\
  160.                         ISDIGIT(p[4]) && ISDIGIT(p[5]) &&\
  161.                         ISDIGIT(p[6]) && ISDIGIT(p[7]) && !p[8] )
  162.  
  163. #define DSYEAR(p)     ( (ADTOI(p[0])*1000) +\
  164.                         (ADTOI(p[1])* 100) +\
  165.                         (ADTOI(p[2])*  10) +\
  166.                         (ADTOI(p[3])) )         /* ds year to int */
  167.  
  168. #define DSMONTH(p)   ( (ADTOI(p[4])*  10) +\
  169.                        (ADTOI(p[5])) )         /* ds month to int */
  170.  
  171. #define DSDAY(p)     ( (ADTOI(p[6])*  10) +\
  172.                        (ADTOI(p[7])) )         /* ds day to int */
  173.  
  174. #define ISDIGIT(p)   ((p)>='0' && (p)<='9')    /* valid digit */
  175. #define MK_FP(seg,ofs)    ((void far *)(((unsigned long)(seg) << 16) | (ofs)))
  176.  
  177. /* #defines Months for generic use in programs */
  178. #define MONTH0       ""
  179. #define MONTH1       "January"
  180. #define MONTH2       "February"
  181. #define MONTH3       "March"
  182. #define MONTH4       "April"
  183. #define MONTH5       "May"
  184. #define MONTH6       "June"
  185. #define MONTH7       "July"
  186. #define MONTH8       "August"
  187. #define MONTH9       "September"
  188. #define MONTH10      "October"
  189. #define MONTH11      "November"
  190. #define MONTH12      "December"
  191.  
  192. /* #defines for _tr_reg.c */
  193.  
  194. #define REG_AX  0
  195. #define REG_BX  1
  196. #define REG_CX  2
  197. #define REG_DX  3
  198. #define REG_SP  4
  199. #define REG_BP  5
  200. #define REG_SI  6
  201. #define REG_DI  7
  202. #define REG_DS  8
  203. #define REG_ES  9
  204. #define REG_SS 10
  205. #define REG_CS 11
  206. #define REG_IP 12
  207. #define REG_FF 13
  208.  
  209. /* #defines for tomoney() */
  210. #define DECPOINT     '.'  /* separates dollars and cents */
  211. #define INPUTMAX     32   /* chars in input string  */
  212. #define OUTPUTMAX    256  /* chars in output string */ 
  213. #define DECIMAX      2    /* number of decimal places  */ 
  214. #define PTRMAX       64   /* numper of pointers to output words */ 
  215. #define NUM_OVRFLW   "****************" /* overflow condition */ 
  216. #define ONES(p)   ((int)(p)[-1]-('0'))  /* convert first ascii digit to int */
  217. #define TENS(p)   ((int)(p)[-2]-('0'))  /* convert second ascii digit to int */
  218. #define HUNS(p)   ((int)(p)[-3]-('0'))  /* convert third ascii digit to int */
  219.  
  220. /* #defines for capfirst() */
  221. #define UC1          'A'
  222. #define UC2          'Z' 
  223. #define LC1          'a' 
  224. #define LC2          'z' 
  225. #define CASEDIFF     (LC1 - UC1)  
  226.  
  227.  
  228. /* #defines for file attribute used by _tr_creat() */
  229. #define FL_NORMAL    0
  230. #define FL_RDONLY    1
  231. #define FL_HIDDEN    2
  232. #define FL_SYSTEM    4
  233. #define FL_VOLUME    8
  234. #define FL_DIR      16
  235. #define FL_ARCHIVE  32
  236.  
  237. /* #defines for file mode used by _tr_open() */
  238. #define READONLY     0
  239. #define WRITEONLY    1
  240. #define READWRITE    2
  241. #define EOF_MARK     0x1A
  242. #define FILEERROR    -1
  243.  
  244. /* Error Message function numbers */
  245. #define E_PREFIX     0
  246. #define E_SYNTAX     1
  247. #define E_ALLOC      2
  248. #define E_FOPEN      3
  249. #define E_FSEEK      4
  250. #define E_FREAD      5
  251. #define E_FWRITE     6 
  252. #define E_FCLOSE     7
  253.  
  254. /* _parinfo types */
  255. #define UNDEF        0
  256. #define CHARACTER    1
  257. #define NUMERIC      2
  258. #define LOGICAL      4
  259. #define DATE         8
  260. #define ALIAS       16
  261. #define MPTR        32   /* bitwise or'ed with type for pass by reference */
  262. #define MEMO        65
  263. #define WORD       128
  264. #define ARRAY      512
  265.  
  266. /* parameter check macros */
  267. #define PCOUNT      (_parinfo(0))
  268. #define ISCHAR(n)   (_parinfo(n) & CHARACTER)
  269. #define ISNUM(n)    (_parinfo(n) & NUMERIC)
  270. #define ISLOG(n)    (_parinfo(n) & LOGICAL)
  271. #define ISDATE(n)   (_parinfo(n) & DATE)
  272. #define ISMEMO(n)   (_parinfo(n) & MEMO)
  273. #define ISBYREF(n   (_parinfo(n) & MPTR)
  274. #define ISARRAY(n)    (_parinfo(n) & ARRAY)
  275. #define ALENGTH(n)    (_parinfa(n, 0))
  276.  
  277. /* uses internal functions of the C compiler; source code not supplied */
  278. #define _tr_fabs(p)       (((p)<0.0)?-1.0*(p):(p))
  279.  
  280. #define _tr_atof     atof
  281. #define _tr_pow      pow
  282. #define _tr_log      log
  283. #define _tr_fmod     fmod
  284. #define _tr_modf     _modf
  285. #define _tr_ceil     ceil
  286. #define _tr_floor    floor
  287. #define _tr_sqrt     sqrt
  288. #define _tr_strrchr  strrchr
  289. #define _tr_strncpy  strncpy
  290. #define _tr_allocmem _exmgrab
  291. #define _tr_freemem  _exmback
  292.  
  293. /* uses internal functions of the Clipper compiler; source code not supplied */
  294. #define _tr_ntoa     _ntoa
  295.  
  296. /* parameter count/type */
  297. extern int     _parinfo();
  298. extern int     _parinfa();
  299.  
  300. /* parameter values */
  301. extern char   *_parc();
  302. extern char   *_pards();       /* date string */
  303. extern int     _parl();        /* logical */
  304. extern int     _parni();
  305. extern int     _parcsiz();
  306. extern int     _parclen();
  307. extern long    _parnl();
  308. extern double  _parnd();
  309.             
  310. /* function return values */
  311. extern void _ret();                 /* procedure (DO) return */
  312. extern void _retc();                /* character */
  313. extern void _retclen(char *, int);
  314. extern void _retds();               /* date string */
  315. extern void _retl();                /* logical */
  316. extern void _retnd();               /* double */
  317. extern void _retnl();               /* long */
  318. extern void _retni();               /* integer */
  319. /* one and only one of the _ret*() functions must used */
  320.  
  321. /* character externals */
  322. extern char *_tr_crypt();
  323. extern char *_tr_errmsgs();
  324. extern char *_tr_getenv();
  325. extern char *_tr_makedate();
  326. extern char *_tr_stpchr();
  327. extern char *_tr_strcat();
  328. extern char *_tr_strcpy();
  329. extern char *_tr_strncpy();
  330. extern char *_tr_strrchr();
  331. extern char *_tr_toup();
  332. extern char *_tr_hexasm();
  333.  
  334. /* double externals */
  335. extern double _tr_atof();
  336. extern double _tr_fmod();
  337. extern double _tr_frexp();
  338. extern double _tr_htod();
  339. extern double _tr_infinity();
  340. extern double _tr_itod();
  341. extern double _tr_log();
  342. extern double _tr_ltod();
  343. extern double _tr_modf();
  344. extern double _tr_pow();
  345. extern double _tr_round();
  346. extern double _tr_sqrt();
  347. extern double ceil();
  348. extern double floor();
  349.  
  350. /* int externals */
  351. extern int _tr_doscnf();
  352. extern int _tr_atoi();
  353. extern int _tr_close();
  354. extern int _tr_creat();
  355. extern int _tr_dtoi();
  356. extern int _tr_htoi();
  357. extern int _tr_isdsvalid();
  358. extern int _tr_open();
  359. extern int _tr_read();
  360. extern int _tr_reg();
  361. extern int _tr_strcmp();
  362. extern int _tr_strlen();
  363. extern int _tr_strncmp();
  364. extern int _tr_write();
  365.  
  366. /* long externals */
  367. extern long _tr_dtol();
  368. extern long _tr_fs();
  369. extern long _tr_htol();
  370. extern long _tr_lseek();
  371. extern long _tr_pnum();
  372.  
  373. /* no return externals */
  374. extern _tr_ntoa();
  375.  
  376. /* clippers memory allocation functions */
  377. extern unsigned char *_exmgrab();
  378. extern void _exmback();
  379. extern unsigned strlen();
  380. typedef unsigned char byte;
  381. typedef unsigned int quant;
  382. typedef int Boolean;
  383.  
  384. /* eof */
  385.  
  386.